package database;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.GregorianCalendar;

import model.Gebruiker;



public class WriteDAO {

	private static DBmanager dbm = DBmanager.getInstance();
	
	
	public void addGebruiker(String voornaam, String achternaam, String inlognaam, String wachtwoord){
		try{
			PreparedStatement addGebruiker = dbm.getConnection().prepareStatement("INSERT INTO Gebruikers(voornaam, achternaam, inlognaam, wachtwoord) VALUES(?,?,?,?)");
			
			addGebruiker.setString(1, voornaam);
			addGebruiker.setString(2, achternaam);
			addGebruiker.setString(3, inlognaam);
			addGebruiker.setString(4, wachtwoord);
			
			addGebruiker.executeUpdate();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	public void addBod(int biederid, int veilingid, double prijs){
		try {
			PreparedStatement addBod = dbm.getConnection().prepareStatement("INSERT INTO Biedingen(biederid, veilingid, prijs, datum) VALUES(?,?,?,?)");
			addBod.setInt(1, biederid);
			addBod.setInt(2, veilingid);
			addBod.setDouble(3, prijs);
			Calendar now = Calendar.getInstance();
			long datum = now.getTimeInMillis();
			addBod.setLong(4, datum);
			addBod.executeUpdate();
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	public void deleteVeiling(int veilingid){
		try {
			PreparedStatement deleteVeiling = dbm.getConnection().prepareStatement("DELETE FROM Veilingen WHERE id=?");
			PreparedStatement deleteBids = dbm.getConnection().prepareStatement("DELETE FROM Biedingen WHERE veilingid=?");
			deleteVeiling.setInt(1, veilingid);
			deleteBids.setInt(1, veilingid);
			
			deleteBids.executeUpdate();
			deleteVeiling.executeUpdate();

		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	public void addVeiling(String titel, String foto, double prijs, Gebruiker verkoper, String omschrijving){
		try{
			PreparedStatement addVeiling = dbm.getConnection().prepareStatement("INSERT INTO Veilingen(titel, foto, prijs, eindtijd, verkoperid, omschrijving) VALUES(?,?,?,?,?,?)");
			Calendar eindtijd = GregorianCalendar.getInstance();
			
			eindtijd.set(Calendar.DAY_OF_MONTH, eindtijd.get(Calendar.DAY_OF_MONTH) + 5);
			
			Timestamp timestamp = new Timestamp(eindtijd.getTime().getTime());
			
			addVeiling.setString(1, titel);
			addVeiling.setString(2, foto);
			addVeiling.setDouble(3, prijs);
//			addVeiling.setDate(4, new java.sql.Date(eindtijd.getTime().getTime()));
			addVeiling.setTimestamp(4, timestamp);
			addVeiling.setInt(5, verkoper.getId());
			addVeiling.setString(6, omschrijving);
			
			addVeiling.executeUpdate();
			
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	public void updateVeiling(String titel, String foto, double prijs, String omschrijving, int veilingid){
		try{
			PreparedStatement updateVeiling = dbm.getConnection().prepareStatement("UPDATE Veilingen SET titel=?, foto=?, prijs=?, omschrijving=? WHERE id=?");
			
			updateVeiling.setString(1, titel);
			updateVeiling.setString(2, foto);
			updateVeiling.setDouble(3, prijs);
			updateVeiling.setString(4, omschrijving);
			updateVeiling.setInt(5, veilingid);
			
			updateVeiling.executeUpdate();
			
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	public void updateGebruiker(String voornaam, String achternaam, String inlognaam, String wachtwoord, int gebruikerid){
		try{
			PreparedStatement updateVeiling = dbm.getConnection().prepareStatement("UPDATE Gebruikers SET voornaam=?, achternaam=?, inlognaam=?, wachtwoord=? WHERE id=?");
			
			updateVeiling.setString(1, voornaam);
			updateVeiling.setString(2, achternaam);
			updateVeiling.setString(3, inlognaam);
			updateVeiling.setString(4, wachtwoord);
			updateVeiling.setInt(5, gebruikerid);
			
			updateVeiling.executeUpdate();
			
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	public void updateGebruikerGeenPW(String voornaam, String achternaam, String inlognaam, int gebruikerid){
		try{
			PreparedStatement updateVeiling = dbm.getConnection().prepareStatement("UPDATE Gebruikers SET voornaam=?, achternaam=?, inlognaam=? WHERE id=?");
			
			updateVeiling.setString(1, voornaam);
			updateVeiling.setString(2, achternaam);
			updateVeiling.setString(3, inlognaam);
			updateVeiling.setInt(4, gebruikerid);
			
			updateVeiling.executeUpdate();
			
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	
	
}
